#ifndef RGBDCamera_H_
#define RGBDCamera_H_
#include <stdio.h>
#include <string>
#include "RGBDFrame.h"
#include "./libbow/trunk/src/Descriptor.h"
#include "./libbow/trunk/src/Codebook.h"
#include "./libbow/trunk/src/CodebookFile.h"

using namespace std;

class RGBDCamera {
	public:

	int camera_type;
	
	float focal_length_x;
	float focal_length_y;
	float optical_center_x;
	float optical_center_y;
	float depth_scaling;
	float factor;	
	int width;
	int height;
	int nr_frames;
	int current_frame_number;
	string data_path;
	string ** rgb_list;
	string ** depth_list;
	double * timings;
	FeatureDescriptor ** words;
	int nr_words;

	RGBDCamera();
	~RGBDCamera();
	virtual void print();
	virtual void store(string path);
	virtual void load(string path);
	virtual void setup(string datapath);
	virtual RGBDFrame * getFrame(int i);
	virtual RGBDFrame * getNextFrame();
	virtual RGBDFrame * getCurrentFrame();
	virtual RGBDFrame * getPreviousFrame();
	virtual void setCodebook(Codebook * codebook_pos, Codebook * codebook_neg);
};
/*
for v in range(depth_image.height):
  for u in range(depth_image.width):
    Z = (depth_image[v,u] / factor) * ds;
    X = (u - cx) * Z / fx;
    Y = (v - cy) * Z / fy;
*/
#endif
